package de.openkanban.server.dao;

import java.util.List;

import de.openkanban.server.domain.Activity;
import de.openkanban.server.domain.Board;
import de.openkanban.server.domain.User;
import de.openkanban.shared.util.StatusCodes;

/**
 * board data access object api
 */
public interface BoardDao {
	Board createBoard(Board board, Long userId);

	Board removeBoard(Board board);

	Board updateBoard(Board board);

	Board getBoardById(Long boardId);

	Board getDefaultBoardByUserId(Long userId);

	Long getNextBoardId(Long currentBoardId, Long userId);

	Long getPriorBoardId(Long currentBoardId, Long userId);

	List<Board> getAll();

	Board getBoardByActivityId(Long parentActivityId);

	Activity addActivityToBoard(Long parentBoardId, Activity newActivity);

	Activity removeFromBoard(Long parentBoardId, Activity activityToRemove);

	StatusCodes addContactToBoard(Long parentBoardId, User newUser);

	StatusCodes removeContactFromBoard(Long parentBoardId, Long userId);
}
